/**
 * 
 */
package travibot.model;

import travibot.meta.StructureType;

/**
 * This is interface for each Travian building or field. The implemenations should be
 * something like Barracs, MainBuilding, CropField,  etc. Each implementation should hold
 * it's upgrade cost information (perhaps static table loaded from properties
 * upon startup).
 * 
 * @author Petr Macek
 * 
 */
public interface Structure {

    enum Type {
        BUILDING, FIELD
    }

    String getDetailLink();

    Level getLevel();

    String getName();

    Cost getNextLevelCost();
    
    Position getPosition();

    Type getType();

    String getUpgradeLink(int villageId);
    
    String getBuildLink();
    
    void setDetailLink(String detailLink);
    
    void setLevel(Level level);
    
    void setName(String name);
    
    void setUpgradeLink(String link);
    
    void setMetaData(StructureType type);
    
    
}
